{
// note this is not a proper basename implementation
char *p = strrchr (path, '\\');
+ if (p == NULL)
+ {
+ // sometimes we pass paths on win with "/" seperators
+ p = strrchr(path, '/');
+ }
return p ? p + 1 : (char *) path;
// char full_path[MAX_PATH], drive[MAX_PATH], dir[MAX_PATH], filename[MAX_PATH], ext[MAX_PATH];
char *cmd = untaint(argv[1]);
char *outf = argv[2];
char *echecksum = argv[3];
-
char **args = calloc(argc-2, sizeof(void*));
args[0] = cmd;
int status;
#ifdef _WIN32
- status = system(cmd);
+ char* fullcmd = malloc(2000);
+ strcpy(fullcmd, args[0]);
+ for(int i=1; i<argc-3; i++)
+ {
+ strcat(fullcmd, " ");
+ strcat(fullcmd, args[i]);
+ }
+ status = system(fullcmd);
+ free(fullcmd);
#else
pid_t child_pid;
exit(1);
}
/* Files must be smaller than 1MB */
- char data[1024*1024] = {0};
+ char* data = malloc(1024*1024);
ssize_t len = read(in, data, 1024*1024);
if(len < 0) {
perror("");
- printf("Unable to read from %s", outf);
+ printf("Unable to read from %s\n", outf);
exit(1);
}
char *cksum = get_hash(data, len, ZCK_HASH_SHA256);
for(int i=0; i<argc-3; i++)
free(args[i]);
free(args);
+ free(data);
return 0;
}
\ No newline at end of file